Desktop sharing has become an important feature in current collaboration software. It allows virtual meeting attendees to be viewing the same material or content (video, documents, etc.) during a discussion. To make desktop sharing possible, the screen content that is being shared by the sending computing device during a collaboration session must be continuously captured, encoded, transmitted, and finally rendered at receiving computing devices for display.
Traditional desktop sharing applications have compressed screen content into H.264 standard video bitstreams. The screen content being shared is typically treated as ordinary camera captured video, where frames are encoded utilizing intra-frame and inter-frame encoding techniques. An intra-frame encoding technique utilizes pixel blocks from the same frame to encode the frame, whereas inter-frame encoding compares a current frame with one of more neighboring frames and uses motion vectors for encoding. Motion vectors are pointers pointing at the positions of the matching block in the reference frame. The process of finding motion vectors is known as motion estimation. By finding matching blocks of pixels between a current frame and a previous/reference frame, redundancies in encoding of such blocks can be avoided, since encoded blocks of pixels in one frame can be used as a reference for the same block of pixels in other frames, thus minimizing the coding and decoding of content that is required.
Existing desktop sharing applications that adopt H.264 video coding typically rely on motion estimation to enhance encoding efficiency. A problem with scene detection in desktop sharing applications utilizing inter-frame encoding is that the encoding technique examines the entirety of each frame pixel by pixel, and this process must be repeated for every incoming frame.